package cn.ygh.bbo.system.bean;
import cn.ygh.bbo.common.annotation.Excel;
import cn.ygh.bbo.framerwork.core.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;

import java.util.*;
import lombok.Data;
import org.apache.commons.lang3.builder.*;
/**
* 描述：角色权限
* @author ygh
*/
@TableName("role_permission")
@Data
public class RolePermission extends BaseEntity {
    /*数据库字段——start*/
    /**
    * 序号
    */
    @Excel("序号")
    @TableId(type = IdType.AUTO)
    @TableField(value = "id")
    private Integer id;

    /**
    * 角色序号
    */
    @Excel("角色序号")
    @TableField(value = "role_id")
    private Integer roleId;

    /**
    * 权限序号
    */
    @Excel("权限序号")
    @TableField(value = "permission_id")
    private Integer permissionId;


    /*数据库字段——end*/

    /**
    * 默认值设置
    * @return
    */
    public RolePermission def(){
        return this;
    }

     /*构造函数——start*/
    public RolePermission() {
    }

    public RolePermission(Integer id) {
        this.id=id;
    }

    /**
    *构造函数
    */
    public RolePermission(Integer roleId,Integer permissionId) {
        this.roleId=roleId;
        this.permissionId=permissionId;
    }
    /*构造函数——end*/

    /*非数据库字段——start*/

    /**
     * 角色列表
     */
    @TableField(exist = false)
    List<Integer>roleIds;
    /*非数据库字段——end*/

    /**
	 * Hash，同所有字段相加判断
	 */
	@Override
	public int hashCode() {
		if(getId()==null){
            return new HashCodeBuilder()
            .append(getRoleId())
            .append(getPermissionId())
			.toHashCode();
        }
		return new HashCodeBuilder()
			.append(getId())
			.toHashCode();
	}
    /**
	 * 重写，对象是否相同，用ID来判断
	 */
	@Override
	public boolean equals(Object obj) {
		if(!(obj instanceof RolePermission)) {
			return false;
		}
		if(this == obj) {
			return true;
		}
        RolePermission other = (RolePermission)obj;
		return new EqualsBuilder()
			.append(getId(),other.getId())
			.isEquals();
	}
	/**
	 * 转文本
	 */
	@Override
	public String toString() {
		return new ToStringBuilder(this,ToStringStyle.SHORT_PREFIX_STYLE)
			.append(super.toString())
            .append(",Id",getId())
            .append(",RoleId",getRoleId())
            .append(",PermissionId",getPermissionId())
			.toString();

	}

/*
//精简构造 角色权限
RolePermission rolePermission = new RolePermission(
            roleId //角色序号
            ,permissionId //权限序号
);
*/
}